import axios from 'axios'
import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user.js'
import { SESSIONIDVAL } from '@/constant/index'
const { VITE_DOMAIN_API, MODE } = import.meta.env
const service = axios.create({
  baseURL: `${VITE_DOMAIN_API}/vue/qygly-gateway/`,
  // baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 50000,
})

// 添加请求拦截器
service.interceptors.request.use(
  (config) => {
    if (MODE == 'development') {
      // 本地开发，固定写死sessionid,具体值可以去企业云登录获取
      // config.headers['Qygly-Session-Id'] = SESSIONIDVAL
       config.headers['Qygly-Session-Id'] = '15EFD55428DD9323FB778CF3DC4CF9FC'
    } else {
      // 生产环境，由于在同一个域名下，读取localstorage里的logininfo
      const store = useUserStore()
      const { sessionId } = store.loginInfo
      if (sessionId) {
        config.headers['Qygly-Session-Id'] = sessionId
      }
    }

    return config
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error)
  },
)

// 添加响应拦截器
service.interceptors.response.use(
  //请求成功,200
  (response) => {
    const store = useUserStore()
    const { data, message, status } = response
    // 对响应数据做点什么
    // 判断当前请求是否成功
    const { succ, errMsg, result } = data
    if (status == 200) {
      // 成功返回解析后的数据
      // ElMessage.success(message)
      if (succ === true) {
        // 请求成功
        return result
      } else if (succ === false) {
        // 请求成功，业务失败，比如token也就是sessionId失效
        ElMessage.error(errMsg)
        if (data.errType == 'com.qygly.shared.UnLoginException') {
          // store.logout()
        }
        // store.logout()
        return Promise.reject(new Error(errMsg))
      } else if (succ === undefined) {
        // 验证码接口
        return data
      }
    } else {
      // 失败消息提示
      ElMessage.error(message)
      return Promise.reject(new Error(message))
    }
  },
  // 请求失败，404，500
  (error) => {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    // const store = useUserStore()
    // if (error.response && error.response.data && error.response.data.code === 401) {
    //   store.logout()
    // }
    ElMessage.error(error.message)
    return Promise.reject(error)
  },
)

export default service
